package com.infocollect.project.grant.service.impl;

import java.util.List;

import com.infocollect.framework.web.domain.AjaxResult;
import com.infocollect.project.grant.domain.GrFamiliesExampointDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.infocollect.project.grant.mapper.GrFamiliesExampointMapper;
import com.infocollect.project.grant.domain.GrFamiliesExampoint;
import com.infocollect.project.grant.service.IGrFamiliesExampointService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 科类考点关联Service业务层处理
 * 
 * @author infocollect
 * @date 2022-05-14
 */
@Service
public class GrFamiliesExampointServiceImpl implements IGrFamiliesExampointService
{


    @Autowired
    private GrFamiliesExampointMapper grFamiliesExampointMapper;

    /**
     * 查询科类考点关联
     * 
     * @param examPointId 科类考点关联ID
     * @return 科类考点关联
     */
    @Override
    public GrFamiliesExampoint selectGrFamiliesExampointById(Long examPointId)
    {
        return grFamiliesExampointMapper.selectGrFamiliesExampointById(examPointId);
    }

    /**
     * 查询科类考点关联列表
     * 
     * @param grFamiliesExampointDto 科类考点关联
     * @return 科类考点关联
     */
    @Override
    public List<GrFamiliesExampointDto> selectGrFamiliesExampointList(GrFamiliesExampointDto grFamiliesExampointDto)
    {
        return grFamiliesExampointMapper.getExampointFamiliesList(grFamiliesExampointDto);
    }

    /**
     * 新增科类考点关联
     * 
     * @param grFamiliesExampoint 科类考点关联
     * @return 结果
     */
    @Override
    public int insertGrFamiliesExampoint(GrFamiliesExampoint grFamiliesExampoint)
    {
        return grFamiliesExampointMapper.insertGrFamiliesExampoint(grFamiliesExampoint);
    }

    /**
     * 修改科类考点关联
     * 
     * @param grFamiliesExampoint 科类考点关联
     * @return 结果
     */
    @Override
    public int updateGrFamiliesExampoint(GrFamiliesExampoint grFamiliesExampoint)
    {
        return grFamiliesExampointMapper.updateGrFamiliesExampoint(grFamiliesExampoint);
    }

    /**
     * 批量删除科类考点关联
     * 
     * @param examPointIds 需要删除的科类考点关联ID
     * @return 结果
     */
    @Override
    public int deleteGrFamiliesExampointByIds(Long[] examPointIds)
    {
        return grFamiliesExampointMapper.deleteGrFamiliesExampointByIds(examPointIds);
    }

    /**
     * 删除科类考点关联信息
     * 
     * @param examPointId 科类考点关联ID
     * @return 结果
     */
    @Override
    public int deleteGrFamiliesExampointById(Long examPointId)
    {
        return grFamiliesExampointMapper.deleteGrFamiliesExampointById(examPointId);
    }

    @Override
    public List<GrFamiliesExampointDto> getFamiliesSelectList(GrFamiliesExampointDto grFamiliesExampointDto) {
        return grFamiliesExampointMapper.getFamiliesSelectList(grFamiliesExampointDto);
    }
    @Override
    @Transactional
    public AjaxResult saveExampointFamilies(GrFamiliesExampointDto grFamiliesExampointDto) {
        Long exampointId = grFamiliesExampointDto.getExamPointId();
        Long grantId = grFamiliesExampointDto.getGrantId();
        int deleCount = grFamiliesExampointMapper.deleteGrFamiliesExampointByGrantIdAndExampointId(grFamiliesExampointDto);
        List<Long> familiesIds = grFamiliesExampointDto.getFamiliesIds();
        familiesIds.stream().forEach(familiesId->{
            GrFamiliesExampoint grFamiliesExampoint = new GrFamiliesExampoint();
            grFamiliesExampoint.setExamPointId(exampointId);
            grFamiliesExampoint.setGrantId(grantId);
            grFamiliesExampoint.setFamiliesId(familiesId);
            insertGrFamiliesExampoint(grFamiliesExampoint);
        });
        return AjaxResult.success();
    }

    @Override
    public List<GrFamiliesExampoint> queryGrfamiliesExampointList(GrFamiliesExampoint grFamiliesExampoint) {
        return grFamiliesExampointMapper.selectGrFamiliesExampointList(grFamiliesExampoint);
    }

}
